/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica.Comandos;

import AccesoDatos.Fabricas.DAO;
import AccesoDatos.Fabricas.DAO.Opciones;
import Logica.Fabricas.Comando;
import ObjetoDominio.Archivo;
import Session.Session;

/**
 * Comado que inicia la descarga de un archivo
 * @author familia
 */
public class ComandoIniciarDescarga extends Thread implements Comando<Boolean>{

    private Archivo _archivo;

    public ComandoIniciarDescarga(Archivo archivo){
        _archivo = archivo;
    }
    
    @Override
    public void run(){
        try {
            while(_archivo.getDescargado() < _archivo.getTamaño()){
                if(!Session.isSesion())
                    break;
                if(Session.getServidorConectado().isActivo())
                    DAO.ObtenerDAO(Opciones.socket).ObtenerDAOArchivo(
                        Session.getServidorConectado()).DescargarArchivo(_archivo);
    
            
            }
        } catch (Exception e) {
            
        }
    }

    @Override
    public Boolean Ejecutar() {
        this.start();
        return true;
    }
    
    @Override
    public void Detener() {
        this.stop();
    }

    @Override
    public void Pausar() {
        this.suspend();
    }

    @Override
    public void Reanudar() {
        this.resume();
    }

    @Override
    public boolean esVivo() {
        return this.isAlive();
    }
}
